# Пар*лус - корпоративный On-Premise парольный менеджер

![alt preview](Parolus_preview.png "Parolus_preview")

## Основные функции

- ⚡ Ускоренный процесс аутентификации
- 🛡️ Высокий уровень защиты хранимых данных
- ➡️ Функция sharing для быстрого обмена паролями между сотрудниками
- 📱 Адаптивен под мобильные устройства
- 📦 Коробочное решение простой задачи обмена конфиденциальной информацией внутри компаний

## Описание
> Стек: FastAPI, VueJS, MongoDB, Docker

> Комментарий автора: "Пар*лус был создан по двум причинам: локальная потребность в незамысловатом парольном менеджере в компании, в которой я работаю,
а также желание попробовать новый для меня стек; парольных менеджеров миллион, так что в этом вы вряд-ли найдете что-то особенное - это просто
нормальное и быстро-разворачиваемое хранилище паролей для ваших сотрудников - это лучше, чем делиться паролями в мессенджерах; выкладываю как open-source
приложение чтобы вы смогли внести свои коррективы, при желании, сможете изменить приложение под свои нужды!"

## Быстрое развёртывание
> Вам потребуется установленный Docker Engine, docker-compose, SSL сертификат для домена .local без пароля (обязательно - положите localhost.crt и localhost.key в директорию /backend/), а также свободные порты 80, 443, 27017 - по умолчанию, бэкенд и фронтенд сконфигурированы для работы под именем parolus.local;
```sh
docker-compose up -d --build
```
> Веб-приложение будет доступно по адресу parolus.local;

# Техническая справка: бэкенд на FastAPI + MongoDB

> Все сконфигурировано для работы с MongoDB, NoSQL базой данных, которая хранит все в BSON формате (binary json) - к ней легко подключаться при помощи
Compass и очень удобно управлять данными - в Пар*лусе будет всего три коллекции (таблицы): users, paroluses, app - они создадутся автоматически; FastAPI
будет хэшировать пароли от учетных записей и зашифровывать созданные объекты паролусов - в БД они будут храниться в виде длинных строк;

- backend/db_conn.py содержит все что связано с БД - подключение к БД, функции-помощники (helper'ы) для ORM, а также CRUD функции для работы с БД;
- backend/db_models.py содержит в себе pydantic модели, упрощающие работу с БД - они также нужны для ORM;
- backend/main.py является самим FastAPI приложением - это эндпоинты API и некоторые вспомогательные функции.

> Стандартно, MongoDB развернется в контейнере, используя порт 27017 и будет доступна для подключения без аутентификации;

# Техническая справка: фронтенд на VueJS

- frontend/src/main.js содержит главные параметры развернутого фронтенда - инициализация VueJS приложения, подключение VueX-store хранилища, а также
библиотеки компонентов PrimeVue;
- frontend/src/plugins/router.js - навигация (роутинг) фронтенд приложения;
- frontend/src/plugins/store.js - VueX хранилище, которое сохранит данные в Local Storage браузера, а также основные API запросы на бэкенд при помощи Axios;
- frontend/src/components/*.vue - SFC (single file component) файлы страниц аутентификации, домашней страницы и панели администратора;
- frontend/src/App.vue - технический файл для инициализации приложения.

# Техническая справка: администрирование

![alt preview](Parolus_admin.png "Parolus_admin")

> Развернув проект на сервере, ваши коллеги не смогут зарегистрироваться самостоятельно на странице аутентификации, однако,
если вы хотите разрешить пользователям создавать УЗ самостоятельно - в панели администратора вы сможете изменить конфигурацию приложения; в вашем распоряжении кастомная панель администратора с основным необходимым функционалом, а также встроенная в FastAPI /docs, на которой можно легко создать первую УЗ администратора.

> Ключ от панели администратора: QS9yFNjn

> 💸 Поблагодарить автора: +7 977 728 82 08 - Иван Ч. (Сбербанк/Т-Банк)

### Москва, 2024
***